The invention relates generally to network communication systems, and more particularly to the correction of data communicated by such systems.
Communication systems are generally used to transmit information between entities that use such information. Such communication systems may be any system that transmits or receives information such as voice data, video data, or data for use by an entity. An entity may be, for example, a computer, networking device, telephone or other device, that receives and transmits information to another entity.
Such information or data is generally transmitted over a network. A network may include, for example, a communication channel upon which signals are transmitted and received. This communication channel may include one or more transmission media, such as copper or fiber optic cable, air, or other medium suitable for transmitting and/or receiving data between entities.
A communication system typically includes one or more communication interfaces that receive and/or transmit data, and are coupled to other communication systems or devices by one or more communication channels. Communication systems generally communicate using one or more communication protocols as is known in the art. For example, communication systems may communicate using a network protocol such as TCP/IP, and transmit information over a communication channel using a data-link and physical protocols such as SONET, Ethernet, or other protocol. Also, these communication systems may be physically connected to each other by fiber-optic interfaces and may have connections by one or more fiber optic cables.
It should be appreciated that there are many different types of communication interfaces and protocols used for transmitting data.
Data communication is an imperfect process. That is, errors may occur in the transmission of data between a sending entity and receiving entity. Error detection is a process of detecting errors in received data. This may be performed by determining, for a received data signal, whether one or more bits of the received signal have been changed during transmission. Error detection may be performed by one or more methods including those known in the art, such as performing parity checks, using checksums to check received signals, comparing received signals to expected signals, and other methods. Error correction is a process for correcting detected errors in received data so that the received data may be used by the receiving system. For example, a transmitting system may transmit additional information such as code words according to an encoding protocol having a group of predefined codewords. A receiving system inspects received signals, and determines whether the received signals include codewords that are members of the group of predefined codewords.
Communication systems modulate information by mapping information into codewords, also referred to as symbols, that can be efficiently transmitted over a communication channel, such as a cable, air, or other communication medium. The modulated information can experience noise signals from external sources, from the medium, or even from interference with the modulated information itself. These noise signals may change the modulated information so as to be considered incorrect or indiscernible from a receiver of the modulated information. Also, degradation of transmission components such as optical components, or transmission component error, may give rise to errors in received information. The receiver of the modulated information must be able to detect and correct these erroneous signals, and, if necessary, request the transmitter to resend the information.
Communications systems may perform error detection and/or error correction when transmitting and/or receiving data. The use of error correction codes is a common solution for detecting and correcting errors in received information. More particularly, the nature of error correction codes allow a receiver of information to determine the presence of and correct, errors in received information.
Hamming codes are a type of well-known binary error correction block codes used for error detection and correction in communication systems. In a Hamming code, a group of binary code words are defined that are valid. Signals are encoded using the valid code words at a transmitting system, and these code words are transmitted to a destination system where they are decoded. More particularly, the received signals are organized into code word blocks and a determination is made whether a received block belongs to the set of valid codewords. If the received block does not belong, there has occurred an error in one or more locations of the received block. Depending on the group of codewords selected, the destination system may be able to correct one or more bit errors in the received data.
There are many other types of codes used to encode and decode data. BCH and Reed-Solomon codes are well-known types of codes used to detect and correct errors in received information. These and other codes are discussed more fully in various texts, such as the book entitled xe2x80x9cError Control Systems for Digital Communication and Storagexe2x80x9d by Stephen B. Wicker, Prentice Hall, Upper Saddle River, N.J. (1995), incorporated herein by reference.
Error detection and correction improves the bit error rate of a particular communication channel by allowing a communication system to detect and correct a finite amount of errors. Forward Error Correction (FEC) is a type of error correction code wherein the algebraic structure of the error correction code is used to determine which of the valid code words is most likely to have been sent, given the erroneous received word. As discussed above, Hamming and other codes provide this capability.
Many types of conventional communication use error detection and correction in their operation. For example, PPP and HDLC communication protocols have a frame structure having a header and trailer, wherein the trailer includes information used for error detection and correction of the frame. Other communication systems employ what is known in the art as a frame check sequence (FCS) or cyclic redundancy check (CRC) codes. For example, Ethernet, Fast Ethernet, and Gigabit Ethernet frames implement a CRC code that is appended to the end of a frame. CRC information used in SDH is a bit interleaved parity CRC polynomial referred to as BIP-8 wherein a parity calculation is calculated for a current frame and transmitted in a subsequent frame over the same physical connection. The BIP-8 error monitoring function is discussed more fully in the book entitled xe2x80x9cBroadband Networking: ATM, SDH and SONETxe2x80x9d by Mike Sexton and Andy Reid, Artech House, Boston, Mass. (1997).
All of the aforementioned types of communication systems transmit the error correction as part of the transmitted frame or in a subsequent frame, increasing overhead of the frame and decreasing the effective throughput of the communication system. To increase throughput of the communication system, some types of communication systems remove error correction and detection altogether, or rely on higher layers of communication to determine whether data is in error.
Communication systems exist that have redundant or xe2x80x9cbackupxe2x80x9d data paths that are used in situations where the xe2x80x9cprimaryxe2x80x9d or working path is unavailable for transferring data. A backup or redundant data path is a data path that is parallel to the working path between a source and destination of data. A data path may include one or more physical components such as copper, fiber, or other active or passive components. In some network configurations, the redundant path carries a copy of data transmitted on the working path, may not carry data under normal operating conditions, or other configuration wherein the redundant path is not relied on in a normal operating condition for transmitting working data. Data channels may be defined between a source and a destination which use one or more data paths.
A conventional approach for a networking system that provides both a working path and redundant path includes transmitting working data over the working path and potentially the redundant path. Because the redundant path in a conventional system carries no useful information or just a duplicate of the original information, the redundant path provides very little benefit except to be present in case the working path becomes unavailable. In this case, the system switches to the redundant path to transfer working data.
One type of network that provides redundant data paths is the Synchronous Optical Network (SONET) standard defined by the American National Standards Institute (ANSI) for communicating data over optical fiber. An equivalent transmission standard approved by the International Telecommunications Union-Telecom (ITU-T, formerly CCITT) is called Synchronous Digital Hierarchy (SDH). SONET has been used extensively in North America, and SDH has been used world-wide outside of North America. SONET/SDH communication systems, called terminals, may be arranged in a linear or ring architecture wherein terminals are coupled by one or more optical fibers. When more than one fiber is used, one fiber may be designated as a working fiber used to transmit information under normal operating conditions. Another fiber may be designated as a backup, redundant, or protection fiber that does not, under normal operating conditions, carry information. In the event that the working fiber fails, the SONET/SDH terminals recognize the failure and switch all of the information to the protection fiber. Once the working fiber is restored, transmission of information may be switched back to the working fiber.
According to one aspect of the invention, a system and method are provided that uses a first data channel to pass working data and a second data channel to pass error correction information. For example, this second data channel may be defined along a redundant data path. For example, this error correction information may be forwarded error correction (FEC) information such as Hamming code information or any other type of error correction information. Use of the redundant path to forward FEC information provides several advantages: 1) the FEC information can be used to correct bit errors that occur within the system, making the system high-quality and more reliable and 2) provides an efficient method to constantly monitor the quality of both the working and redundant path. Monitoring may be accomplished, for example, by transmitting the FEC information on the redundant path in conjunction with the information on the working path to accurately count the number of errors that occur on the working and redundant paths. Information provided by monitoring the number of errors can then be used to diagnose problems on the working path, so that problems can be fixed before there is a need for the communication system to switch over to the redundant path.
In the conventional system wherein the redundant path simply transmits a redundant copy of the information on the redundant path, a determination may be made by a receiving system that the data on the two paths is different and that one or both paths have a problem. However, the conventional system cannot correct a low bit error rate problem because the system cannot identify on which path the problem exists. Thus, the conventional system cannot correct received information. Also, the conventional system cannot quantify how bad the errors are within the received transmitted data. By passing FEC information on the redundant path through the system, bit errors may be detected and corrected, and a quantification of the problem may be made.
In other conventional systems, original data and FEC information are transmitted over the same path at a much higher data rate, such that both the original data and the new FEC information can be transmitted together. However, a receiver of this data must be able to distinguish between data and FEC information, and must be able to operate at higher transmission frequencies. Transmission at higher frequencies makes hardware more difficult to design and thus cost of the hardware is increased.
Also, the receiver must be able to recognize an alternate frame format including this FEC information. Because transmission standards and data formats are fixed for the primary data transmission channel, there are limited modifications that a system designer could make in the primary data transmission channel without affecting transmission of information to other types of equipmentxe2x80x94generally a designer must alter the data transmission format to encode additional information. To overcome these and other problems, the redundant path may be used to forward FEC information, and this information may be transmitted in a format that can be recognized by the receiving system. In one embodiment of the invention, the frame format of FEC information is transmitted in a format being similar in form to a conventional SONET frame. In another embodiment of the invention, FEC information is determined at a byte level or less. By using byte-oriented FEC coding schemes, the method may be used for both grooming and non-grooming applications.
According to one embodiment of the invention, a networking system is provided that makes use of a working and redundant protected data path. The networking system uses the protected path to pass FEC information through the system. By making use of the extra bandwidth of the protected path, any type of forward error correction FEC may be used to improve the quality of a data transmission system. An additional benefit of sending FEC information over the working path is that the FEC information provides a way to actively monitoring the health/quality of the working and protected paths within the system.
In accordance with one embodiment of the invention, a network communication system for transmitting data between systems. The network communication system comprises a working data path over which working data is transmitted by the network communication system, and a redundant data path, wherein the network communication is configured to transmit error correction information over the redundant path, the error correction information being used to correct a portion of the working data. According to another embodiment of the invention, the network communication system is adapted to generate the error correction information. According to another embodiment of the invention, the communication system is adapted to transmit the working data, and wherein the error correction information is derived from the working data by the communication system.
According to another embodiment of the invention, the working data and error correction information are transmitted substantially in parallel over the working data path and redundant data path, respectively. According to another embodiment of the invention, the transmitted error correction information is transmitted substantially in parallel with the working data from which the transmitted error correction information is derived. According to another embodiment of the invention, the network communication system is configured to transmit error detection information indicative of a transmission error occurring on at least one of the redundant and working data paths.
According to another embodiment of the invention, the error correction information is information generated by Hamming encoding operation. According to another embodiment of the invention, the working data is encoded in at least one data frame transmitted on the working data path. According to another embodiment of the invention, the error correction information is encoded in a data frame transmitted on the redundant data path. According to another embodiment of the invention, the data frame is a data frame having at least one format portion of a SONET data frame. According to another embodiment of the invention, the data frame has a SONET data frame format. According to another embodiment of the invention, the redundant data path is a SONET protection path.
According to another embodiment of the invention, the working data is encoded in a first data frame transmitted on the working data path, the error correction information is encoded in a second data frame transmitted on the redundant data path, and the communication system aligns the first and second data frames. According to another embodiment of the invention, a buffer is provided that aligns the first and second data frames based upon information indicating the beginning of at least one of the first and second data frames. According to another embodiment of the invention, the error correction information is forward error correction information. According to another embodiment of the invention, the forward error correction information is received by another communication system and is used to correct bit errors with data frames of the working path.
According to another embodiment of the invention, the communication system provides a signal indicating an error on the working data path. According to another embodiment of the invention, the communication system provides a signal indicating an error on the redundant data path. According to another embodiment of the invention, error correction information is determined for working data in data block sizes in a range of a byte level or less. According to another embodiment of the invention, the error correction information is used to derive a missing portion of the working data.
According to another aspect of the invention, a method is provided for encoding data comprising determining, for a portion of a working data stream, error correction information derived from the portion, transmitting the portion of the working data stream on a first data channel, and transmitting, the error correction on a second data channel. According to another embodiment of the invention, the first data channel is configured along a working data path, and wherein the second data channel is configured along a redundant data path. According to another embodiment of the invention, the determining operation comprises determining error correction information based upon the portion wherein the size of the portion is in a range of a byte or less. According to another embodiment of the invention, the operations of transmitting the portion of the working data stream and transmitting error correction information are performed substantially concurrently. According to another embodiment of the invention, the method comprises determining error detection information based upon the portion and the error correction information. According to another embodiment of the invention, the method comprises transmitting the error detection information on the redundant path. According to another embodiment of the invention, the determining operation includes determining Hamming code information determined from the portion.
According to another aspect of the invention, a method is provided for decoding data comprising receiving, on a first data channel, a portion of a working data stream, receiving, on a second data channel, error correction information derived from the portion, and determining whether to correct data within the portion based upon the received error correction information. According to another embodiment of the invention, the first data channel is configured along a working data path, and wherein the second data channel is configured along a redundant data path. According to another embodiment of the invention, the method comprises performing an error correction of the portion. According to another embodiment of the invention, the step of performing an error correction of the portion is performed on a byte or less of data. According to another embodiment of the invention, the step of receiving the portion and receiving error correction information are performed substantially in parallel. According to another embodiment of the invention, the method comprises receiving error detection information based upon the portion and the error correction information; and accepting the received portion and error correction information based upon the error detection information.
According to another aspect of the invention, a system is provided for encoding data. The system comprises an error correction generator that generates, for a portion of a working data stream, error correction information derived from the portion, and an interface that is configured to transmit the portion of the working data stream on a first data channel, and configured to transmit the error correction on a second data channel. According to another embodiment of the invention, the first data channel is configured along a working data path, and wherein the second data channel is configured along a redundant data path. According to another embodiment of the invention, the error correction generator generates error correction information based upon the portion wherein the size of the portion is in a range of a byte or less. According to another embodiment of the invention, the interface is configured to transmit the portion of the working data stream and error correction information substantially concurrently. According to another embodiment of the invention, the system further comprises an error detection generator that generates error detection information based upon the portion and the error correction information. According to another embodiment of the invention, the interface transmits the error detection information on the redundant path. According to another embodiment of the invention, the error correction generator determines Hamming code information determined from the portion.
According to another aspect of the invention, a system is provided for decoding data. The system comprises an interface that receives, on a first data channel, a portion of a working data stream and receives, on a second data channel, error correction information derived from the portion, and a decoder that determines whether to correct data within the portion based upon the received error correction information. According to another embodiment of the invention, the first data channel is configured along a working data path, and wherein the second data channel is configured along a redundant data path. According to another embodiment of the invention, the decoder is configured to perform an error correction of the portion. According to another embodiment of the invention, the error correction of the portion is performed by the decoder on a byte or less of data. According to another embodiment of the invention, the interface receives the portion and error correction information substantially concurrently. According to another embodiment of the invention, the interface is configured to receive error detection information based upon the portion and the error correction information, and wherein the decoder is configured to detect errors in the received portion and error correction information based upon the error detection information.
Further features and advantages of the present invention as well as the structure and operation of various embodiments of the present invention are described in detail below with reference to the accompanying drawings. In the drawings, like reference numerals indicate like or functionally similar elements. Additionally, the left-most one or two digits of a reference numeral identifies the drawing in which the reference numeral first appears.